// 这个文件依赖于 ZhiXinBrowseVueLoader.umd.min.js 工具文件

/**
 *     // 示例测试
 *     const target = '/fengjie/intelligentReport';
 *     const current = '/fengjie/vue/src/views/intelligentReport.vue';
 *     console.log(getRelativePath(target, current)); // 输出：./vue/src/views/intelligentReport.vue
 *     写这个方法就是问了可以把BrowseVueLoader工具引入到单体项目中使用
 * @param targetPath 这个文件路径写的时候想的是html绝对路径，不带http的，看列子
 * @param currentPath 这个文件路径是要计算出来的相对路径文件的绝对路径，不带http，看例子
 * @returns {string|string}
 */
BrowseVueLoader.getRelativePath = function(targetPath, currentPath) {
    // 辅助函数：标准化路径（去除末尾多余的斜杠）
    const normalize = (path) => path.replace(/\/+$/, '');

    // 标准化输入路径
    const normalizedTarget = normalize(targetPath);
    const normalizedCurrent = normalize(currentPath);

    // 按斜杠分割路径为数组（Unix风格路径）
    const targetParts = normalizedTarget.split('/');
    const currentParts = normalizedCurrent.split('/');

    // 寻找最长公共前缀的长度
    let commonLength = 0;
    const minLength = Math.min(targetParts.length, currentParts.length);
    while (commonLength < minLength && targetParts[commonLength] === currentParts[commonLength]) {
        commonLength++;
    }

    // 截取当前路径中公共前缀后的剩余部分
    const relativeParts = currentParts.slice(commonLength);

    // 拼接结果（若剩余部分为空则返回 '.'，否则添加 './' 前缀）
    const relativePath = relativeParts.join('/');
    return relativePath === '' ? '.' : `./${relativePath}`;
}